'''
Description: 
Author: Zilu
Date: 2021-11-09 14:16:45
Version: 
LastEditTime: 2021-11-09 15:51:50
LastEditors: Zilu
'''

# os 模块可以调用操作系统提供的接口函数
import os
os.name
# # 如果是posix，说明系统是Linux、Unix或Mac OS X，如果是nt，就是Windows系统。

# # 在非windows系统上，可以用uname查看详细信息

# # 查看环境变量
# os.environ

# # 获取某个环境变量的值
# os.environ.get("PATH")

# # 查看路径
# os.path.abspath('.')

# # 创建路径用join，不要直接拼接字符串
# path = os.path.join(os.path.abspath('.'), 'testdir')
# os.mkdir(path)
# os.rmdir(path)

# # 同样，分隔路径请用 split 函数，返回两个部分，后一部分总是最后级别的目录或者文件名
# open(os.path.join(path, 'test.txt'), 'w')
# os.path.split('C:\\Users\\Zilu\\Desktop\\Notebook\\Python\\testdir\\test.txt')

# # splittext 获取文件扩展名
# os.path.splitext('C:\\Users\\Zilu\\Desktop\\Notebook\\Python\\testdir\\test.txt')

# # 文件重命名和删除
# path = 'C:\\Users\\Zilu\\Desktop\\Notebook\\Python\\testdir'
# os.rename(os.path.join(path,'test.txt'),os.path.join(path,'test.py'))
# os.remove(os.path.join(path,'test.py'))

# # os 没有复制文件的操作，可以使用shutil模块的copy_file()函数

# # 过滤文件
# [x for x in os.listdir('.') if os.path.isdir(x)]

# # 过滤指定文件
# [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py']

# 练习：能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件，并打印出相对路径。
def fileFind(str, directory='.'):
    def fileSearch(str, directory):
        # isfile() 判断也要用cwd下的完整路径
        filelist = [x for x in os.listdir(directory) if os.path.isfile(os.path.join(directory, x))]
        for f in filelist:
            if f.find(str) != -1:
                print(os.path.join(directory, f))

    fileSearch(str, directory)
    dirlist = [x for x in os.listdir(directory) if os.path.isdir(x)]
    for dir in dirlist:
        # 注意这里要传入cwd下的完整路径
        fileFind(str, os.path.join(directory, dir))

fileFind('test')

# 练习：利用os模块编写一个能实现dir -l输出的程序


